9.2.2.1. Bağlantılı Listeyle Yığın Uygulama Örneği

Programda yığın işlevini yerine getiren tek bir fonksiyon tasarımı verilmiştir. Bu fonksiyon, tamamen modüler özelliktedir ve hiçbir global değişkene bağlı değildir; yalnızca yigindugum yapısı global olarak tanımlanmalıdır. Fonksiyon içerisindeki tüm değişkenleri kendi içerisinde yereldir.

/* Global bildirimler */
#define N 500
int Yveri[N]={0}, yi=0;

int yigin(int veri, char mod)
{
     static yigindugum *yi=NULL;
     yigindugum *g, v;

     if(mod=='a') {      /* al modu-yığının başındakini gönderiyor */
     if(yi==NULL) return EKES; /* yığın boş */
     g=yi;
     v.veri=yi->veri;
     yi=yi.arka;
     free(g);             /* boşalan düğümün bellek alanı serbest bırakılıyor */
     return v.veri;
}
else {                    /* koy-ekle modu */
          g=malloc(sizeof(yigindugum));
          if(g==NULL) return EKES; /* bellek alanı yetersiz */
          g->veri=veri;
          g->arka=yi;
          yi=g;
      }
}